To improve engine control functions, an electronic control unit (ECU) with a microcomputer has been used in recent years for executing control programs, such as control of ignition timing in an engine, control of valve opening and closing timing, and/or control of fuel injection in an electronic fuel injector (EFI) for an automobile (hereinafter, referred to as a "vehicle"). The ECU is connected to sensors, such as a temperature sensor for detecting a temperature of engine cooling water, an engine-speed sensor for detecting an engine speed, a vehicle-speed sensor for detecting a vehicle speed, an O2 sensor for detecting an oxygen concentration in exhaust gas, and various switches including a brake switch for detecting that a driver has stepped on a brake pedal. The ECU thus executes various kinds of controls based on detection signals output from the sensors and others.
On the production line where vehicles with such an ECU are manufactured, in the final test process after assembled, it should be diagnosed whether or not each sensor and the like, and the ECU itself functions normally. For example, Japanese patent publication No. Hei 3-59372 proposes a diagnostic method in which a diagnostic apparatus with a microcomputer executes a vehicle diagnostic program to diagnose a desired diagnostic item at a scheduled time.
In a failure diagnosis related to a plurality of diagnostic items, for example, as disclosed in Japanese patent publication No. Sho 61-25091, the plurality of diagnostic items are diagnosed in predetermined order and the results of pass/failure or displayed judgment in respective diagnostic items are output one by one on a display device.
Some of such vehicle diagnostic items, such as an "Ne Diagnosis" to determine whether or not an engine speed Ne at idling time is in a given range, and a "Brake Switch Diagnosis" to diagnose an opening and closing function of a brake switch, can be executed in a relatively easy way in an inspection process. The inspection process under limited conditions, however, makes it difficult to realize actually effective running conditions for some other diagnoses such as one to diagnose a function for controlling valve opening and closing timing in accordance with predetermined parameters, e.g., the vehicle running speed and/or the engine speed, and one to diagnose an evaporation system for collecting fuel gas evaporated from a fuel tank and supplying it to the engine when predetermined operating conditions are satisfied (hereinafter, referred to as an "EVP Diagnosis"). For diagnoses related to such diagnostic items, a diagnostic technique may be considered in which the ECU supplies a forced activation signal to each associated part to forcibly actuate the valve or evaporation system so as to diagnose it as being good or bad based on whether or not an actually obtained (or observed) state of the valve or evaporation system is in a state predicted corresponding to the forced activation signal.
On the other hand, recent ECUs are equipped with respective self-diagnostic functions. When such a self-diagnostic function detects an out-of-range abnormal signal at its input terminal with which various sensors are connected, it regards the vehicle as having trouble with a corresponding part, and stores in a memory a code (failure code) for identifying the part from which the abnormal signal is output and the value of the abnormal signal (failure data). The failure code and data can be read from the ECU using a special-purpose device at an auto repair shop for determination of the state and contents of the failure.
In a vehicle with such a self-diagnostic function mounted thereon, for example, when the evaporation system supplies the engine with fuel collected in a canister in response to the forced activation signal irrespective of the normal control procedure, the O2 sensor for detecting an oxygen concentration in exhaust gas may show an abnormal value, or there may be a misfiring. This causes a problem that the self-diagnostic apparatus may wrongly diagnose a self-diagnostic item using such a detected value as a wrong parameter.